 

 
// API  fs  文件系统
// 得到文件与目录的信息：stat
// 创建一个目录：mkdir
// 创建文件并写入内容：writeFile,appendFile
// 读取文件的内容：readFile
// 列出目录的东西：readdir
// 重命名目录或文件：rename
// 删除目录与文件：rmdir,unlink

const fs = require("fs")

// 1.0 
// fs.stat(path[, options], callback)     异步  
// fs.statSync(path[, options])           同步 


// fs.stat("./logs",(err,stats)=>{
//     if(err) throw err;       
//     console.log("操作成功")
//     console.log(stats)
//     console.log(stats.isFile()?'这是一个文件':'这是一个目录')
// })

// const stat = fs.statSync('./one.js')
// console.log(stat.isDirectory()?'这是一个目录':'这是一个文件')


// 2.0  
// fs.mkdir(path[, options], callback)

// fs.mkdir('demo1',(err)=>{
//     try{
//         console.log("目录创建成功")
//     }catch(err){
//         console.log("文件目录创建失败")
//         throw err;
//     }
// })

// 创建文件并写入内容：writeFile,appendFile
// fs.writeFile(file, data[, options], callback)
// fs.appendFile(file, data[, options], callback)

// for(var i = 0;i<100;i++){
//     fs.writeFile('logs/hello.log',"wuhan2114-daydayup2"+i+'\n',"utf8",(err)=>{
//         if(err) throw err;
//         console.log('文件创建成功')
//     })
// }

// for(var i = 0;i<100;i++){
//     fs.appendFile('logs/demo.log',"wuhan2114-天道酬勤"+i+'\n',"utf8",(err)=>{
//         if(err) throw err;
//         console.log('文件创建成功')
//     })
// }

// 读取文件的内容：readFile 
// fs.readFile(path[, options], callback)  

// fs.readFile("logs/demo.log","utf8",(err,data)=>{
//     if(err) throw err;
//     console.log(data); 

// })


// 列出目录的东西：readdir

// 读取每一层的文件名称  
// fs.readdir("logs","utf8",(err,files)=>{
//     if(err) throw err;
//     console.log(files)
// })

// 重命名目录或文件：rename
// fs.rename("demo1","mydemo",(err)=>{
//     if(err) throw err;
//     console.log('文件重命名成功')
// })


// 删除目录与文件：rmdir,unlink
// 删除文件目录 先判断目录是否为空  
// fs.rmdir('demo',(err)=>{
//     if(err) throw err;
//     console.log("Demo 目录删除成功")
// })

// fs.unlink('mydemo/demo.js',(err)=>{
//     if(err) throw err;
//     console.log("文件删除成功")
// })



// 3.9 作业 
function listFile(filename){
    fs.readdir(filename,(err,files)=>{
        if(err) throw err;
        if(files.length>0){
            // 有文件或者文件夹
            // 继续
            files.forEach(item=>{   // hello.log  libs 
                fs.stat(filename+"/"+item,(err,stat)=>{
                    if(err) throw err;
                    if(stat.isDirectory()){
                        // 目录
                        listFile(filename+"/"+item)   // 递归的出口 
                    }else{
                        fs.unlink(filename+"/"+item,err=>{
                            if(err) throw err;
                            console.log(filename+"/"+item + ' 被删除了')
                            // 删除文件再去判断是目录为空 
                            fs.readdir(filename,(err,files)=>{
                                if(err) throw err;
                                if(files.length==0){
                                    fs.rmdir(filename,(err)=>{
                                        if(err) throw err;
                                    })
                                }
                            })
                        })
                    }
                })
            })
        }else{
            // 把自己删除了 
            fs.rmdir(filename,(err)=>{
                if(err) throw err;
                
            })
        }
    })
}

listFile('logs')